<html>
<head><meta charset="utf-8"><title>datalog interpreter impl · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html">datalog interpreter impl</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="219157240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219157240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219157240">(Dec 08 2020 at 00:25)</a>:</h4>
<p><a href="https://twitter.com/guswynn/status/1336091790223368194?s=20">https://twitter.com/guswynn/status/1336091790223368194?s=20</a></p>
<div class="inline-preview-twitter"><div class="twitter-tweet"><a href="https://twitter.com/guswynn/status/1336091790223368194?s=20"><img class="twitter-avatar" src="https://pbs.twimg.com/profile_images/885028954658271232/2er7hcYh_normal.jpg"></a><p><a href="https://twitter.com/yoshuawuyts">@yoshuawuyts</a> why does chalk have its own solver, but polonious uses this?</p><span>- g̶͇̻̀ū̵̯͙͎́s̷̙͉̥̓͒͠ (@guswynn)</span></div></div><p>why does chalk have its own solver, but polonious uses datafrog? Is it for perf and datafrog makes proof of concepts easier? Chalk and polonious both use datalog right? or does chalk need something higher than datalog?</p>



<a name="219161798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219161798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219161798">(Dec 08 2020 at 01:37)</a>:</h4>
<p>chalk’s is different and more prolog like indeed, not datalog. datafrog was actually made for polonius, so it is Polonius’ solver in that way</p>



<a name="219161978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219161978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219161978">(Dec 08 2020 at 01:41)</a>:</h4>
<p>(polonius did not exist as such then, only as experiments within NLLs, but the datalog engine was made to replace the timely-dataflow based implementation of these experiments, which live on as polonius)</p>



<a name="219228562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219228562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219228562">(Dec 08 2020 at 16:31)</a>:</h4>
<p>if prolog is a super-set datalog, why not merge the core engine parts of chalk and polonious?</p>



<a name="219231032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231032">(Dec 08 2020 at 16:51)</a>:</h4>
<p>Chalk's solver also goes a bit beyond prolog's clauses</p>



<a name="219231056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231056">(Dec 08 2020 at 16:51)</a>:</h4>
<p>it's not only Horn clauses</p>



<a name="219231202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231202">(Dec 08 2020 at 16:52)</a>:</h4>
<p>but one generalisation: Hereditary Harrop formulas/predicates</p>



<a name="219231272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231272">(Dec 08 2020 at 16:52)</a>:</h4>
<p>we do need some of those for Rust, but that job can be shared between chalk and polonius</p>



<a name="219231344"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231344" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231344">(Dec 08 2020 at 16:53)</a>:</h4>
<p>so the current line of thought is (and bear in mind this is where we have done the least design work or prototyping as of now)</p>



<a name="219231532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231532">(Dec 08 2020 at 16:55)</a>:</h4>
<p>to have them collaborate, rather than merged into one, chalk's handling higher-ranked subtyping and generating "current polonius" facts</p>



<a name="219231669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231669">(Dec 08 2020 at 16:56)</a>:</h4>
<p>in particular it's not absolutely set in stone that we're going to use a datalog engine to do the different polonius analyses</p>



<a name="219231711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231711">(Dec 08 2020 at 16:56)</a>:</h4>
<p>There is a big difference between prolog and datalog. Prolog starts at the goal and works down towards facts that could satisfy them. Datalog starts with facts and repeatedly applies the rules until no further facts can be discovered. Chalk has to use prolog as the set of derivable facts is often infinite. This is not the case for polonious, so datalog can be used, which could be more efficient.</p>



<a name="219231718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231718">(Dec 08 2020 at 16:56)</a>:</h4>
<p>it's what we use now, because it's extremely easy to prototype, concise, clear and relatively performant to do so</p>



<a name="219231814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231814">(Dec 08 2020 at 16:57)</a>:</h4>
<p>but it's also currently not exactly scaling to what we need it to, so we'll see how this shakes out</p>



<a name="219231958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219231958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219231958">(Dec 08 2020 at 16:58)</a>:</h4>
<p>(Niko has a post on concerns about higher-ranked subtyping if you're interested <a href="https://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/">https://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/</a>)</p>



<a name="219232165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219232165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219232165">(Dec 08 2020 at 17:00)</a>:</h4>
<p>(technically both directions of evaluation can work in datalog, the "top-down evaluation" is the most prolog-y, and the "bottom-up evaluation" is exactly how bjorn3 described -- and datafrog is currently the latter kind)</p>



<a name="219233243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219233243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219233243">(Dec 08 2020 at 17:08)</a>:</h4>
<p>just to illustrate why, even though we love the benefits of datalog, it's not necessarily the greatest solution to everything: the location insensitive analysis can be reframed as another problem, and if anyone knows a datalog engine that will do that, detect arbitrary rules and transform them into reachability queries on the condensation graph of the CFG, with bonus points if it computes the SCCs and the reachability acceleration structure at the same time, like Nuutila's modified Tarjan's method, <em>please let me know</em> :)</p>



<a name="219233465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219233465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219233465">(Dec 08 2020 at 17:10)</a>:</h4>
<p>(also the queries need to not allocate)</p>



<a name="219234179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234179">(Dec 08 2020 at 17:15)</a>:</h4>
<p>interesting, my concern/thinking was that while a datalog engine could be more efficient, more time may have been spent on the efficiency of the chalk solver then it may still be faster than datafrog (obviously this is not tested), and it could be less code to maintain, but i see now its much more subtle that than</p>
<p>as well as what <span class="user-mention" data-user-id="116113">@lqd</span> said, for prototyping, simplicity is key for now</p>



<a name="219234357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234357">(Dec 08 2020 at 17:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116113">lqd</span> <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/datalog.20interpreter.20impl/near/219231532">said</a>:</p>
<blockquote>
<p>to have them collaborate, rather than merged into one, chalk's handling higher-ranked subtyping and generating "current polonius" facts</p>
</blockquote>
<p>wait chalk and polonious will have to interact? or will chalk have to produce some info about sub-typing that polonious has to be given?</p>



<a name="219234476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234476">(Dec 08 2020 at 17:17)</a>:</h4>
<p>since they compute different things it's not easy to compare them on efficiency, but in truth not that much has been done on efficiency in either solvers; mostly because correctness needs to come first in these sensitive cases</p>



<a name="219234481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234481">(Dec 08 2020 at 17:17)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116113">lqd</span> <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/datalog.20interpreter.20impl/near/219233243">said</a>:</p>
<blockquote>
<p>just to illustrate why, even though we love the benefits of datalog, it's not necessarily the greatest solution to everything: the location insensitive analysis can be reframed as another problem, and if anyone knows a datalog engine that will do that, detect arbitrary rules and transform them into reachability queries on the condensation graph of the CFG, with bonus points if it computes the SCCs and the reachability acceleration structure at the same time, like Nuutila's modified Tarjan's method, <em>please let me know</em> <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span></p>
</blockquote>
<p>this is an interesting comment and I clearly have a lot to learn about</p>



<a name="219234523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234523">(Dec 08 2020 at 17:17)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116113">lqd</span> <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/datalog.20interpreter.20impl/near/219234476">said</a>:</p>
<blockquote>
<p>since they compute different things it's not easy to compare them on efficiency, but in truth not that much has been done on efficiency in either solvers; mostly because correctness needs to come first in these sensitive cases</p>
</blockquote>
<p>ah</p>



<a name="219234818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234818">(Dec 08 2020 at 17:19)</a>:</h4>
<p>I think im going to re-read every chalk and polonious post niko has made this week</p>



<a name="219234822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219234822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219234822">(Dec 08 2020 at 17:20)</a>:</h4>
<p>again, not that much has been done on these advanced topics (as we haven't finished handling the most basic topics yet), and of course Niko was the one doing that, so take this with a grain of salt :) my recollection is that chalk will produce polonius facts and interact with it while solving higher-ranked stuff</p>



<a name="219235045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235045">(Dec 08 2020 at 17:21)</a>:</h4>
<p>there has been chalk branches in that direction, and some design work, so one could say it's still in the design phase ^^ there's a plan, but until we either have the time to devote to the topic, or chalk is finished and there's nothing else to do but look at that, it's still a tentative plan</p>



<a name="219235305"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235305" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235305">(Dec 08 2020 at 17:23)</a>:</h4>
<p>unfortunately life gets in the way and none of us have a lot of time available to dedicate to polonius; this is why we have this different sprint model where we periodically make the time and hack together. hopefully we can pick that up early next year once things clear up for everybody</p>



<a name="219235452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235452">(Dec 08 2020 at 17:24)</a>:</h4>
<p>I hope that answers your questions</p>



<a name="219235484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235484">(Dec 08 2020 at 17:24)</a>:</h4>
<p>yeah to be clear, i wasnt expecting anything soon, just getting my bearing to see if I can help out at some point! <br>
glad to hear next year there might be interesting stuff happening!</p>



<a name="219235499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gus Wynn <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235499">(Dec 08 2020 at 17:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116113">lqd</span> <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/datalog.20interpreter.20impl/near/219235452">said</a>:</p>
<blockquote>
<p>I hope that answers your questions</p>
</blockquote>
<p>it does, thanks!!</p>



<a name="219235519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/datalog%20interpreter%20impl/near/219235519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/datalog.20interpreter.20impl.html#219235519">(Dec 08 2020 at 17:24)</a>:</h4>
<p>sure, no problem</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>